Flask Web 开发 用户认证 您所在的位置:网站首页 flask form唯一性验证 Flask Web 开发 用户认证

Flask Web 开发 用户认证

2023-09-08 18:02| 来源: 网络整理| 查看: 265

用户认证章节真够长的,不过涉及到的内容确实多,继续上一章节

这部分讲到的是新用户注册以后,需要在邮箱里面点击链接进行确认,这个在我们平时网站注册新用户的时候,经常会碰到

确认邮件中最简单的确认链接是http://www.example.com/auth/confirm/ 这种形式的URL,其中id 是数据库分配给用户的数字id。用户点击链接后,处理这个路由的视图函 数就将收到的用户id 作为参数进行确认,然后将用户状态更新为已确认。但这种实现方式显然不是很安全,只要用户能判断确认链接的格式,就可以随便指定URL中的数字,从而确认任意账户。解决方法是把URL 中的id 换成将相同信息安全加密后得到的令牌。

(venv) $ python manage.py shell >>> from manage import app >>> from itsdangerous import TimedJSONWebSignatureSerializer as Serializer

>>> s = Serializer(app.config['SECRET_KEY'], expires_in = 3600)                #expires_in表示这个秘钥令牌的有限时间是多久,秒为单位 >>> token = s.dumps({ 'confirm': 23 })                                                                   #dumps表示将{'confirm':23}转化成安全令牌 >>> token 'eyJhbGciOiJIUzI1NiIsImV4cCI6MTM4MTcxODU1OCwiaWF0IjoxMzgxNzE0OTU4fQ.ey ...' >>> data = s.loads(token)                                                                                       #loads则表示解析这个令牌,等于反向解码 >>> data  {u'confirm': 23}

接着,有了这个验证的东西,我们起码要为我们的模型添加这样一个属性

class User(UserMixin,db.Model): __tablename__='users' id=db.Column(db.Integer,primary_key=True) email=db.Column(db.String(64),unique=True,index=True) username=db.Column(db.String(64),unique=True,index=True) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) password_hash=db.Column(db.String(128)) confirmed = db.Column(db.Boolean,default=False)        



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有